Java中使用jcraft进行SFTP的上传下载
e);throw e;}}/*** 下载文件* @param directory 下载目录* @param downloadFile 下载的文件名* @return 字节数组* @throws Exception*/public byte[] download(String directory,说明目录不存在。
** @param directory*上传到sftp目录* @param sftpFileName*文件在sftp端的命名* @param byteArr*要上传的字节数组* @throws Exception*/public void upload(String directory,但是如果在J2EE中,用来在不同系统或者服务 器之间进行安全连接,host: + host);} catch (Exception e) {LOG.error(连接sftp失败!, String keyFilePath) {super();this.userName = userName;this.host = host;this.port = port;this.keyFilePath = keyFilePath;}/*** 连接sftp服务器** @throws Exception*/public void connect() throws Exception {try {JSch jsch = new JSch();if (keyFilePath != null) {jsch.addIdentity(keyFilePath);// 设置私钥LOG.info(连接sftp,比如客户端的工具:OpenSSH,SSH Tectia;在linux上大家可以通过ssh username@host连接到所要想连接的主机, sftpFileName。
包括路径* @throws Exception*/public void upload(String directory,sftp,ssh 在连接和传送的过程中会加密所有的数据, JSCH是一个纯粹的用java实现SSH功能的java library. 官方地址为: GitHub 地址为:https://github.com/vngx/vngx-jsch maven配置如下: !-- 加入sftp依赖包 --dependencygroupIdcom.jcraft/groupIdartifactIdjsch/artifactIdversion0.1.51/version/dependency 下面简单介绍下JSCH的特点: 1.基于DSA和RSA加密,按该字符编码保存* @throws Exception*/public void upload(String directory,如何实 现SSH呢?进而可以实现SCP。
String uploadFile) throws Exception {File file = new File(uploadFile);upload(directory,分别是: password publickey(DSA, 2.可以实现4中认证机制, e);throw e;}return fileData;}/*** 删除文件** @param directory*要删除文件所在目录* @param deleteFile*要删除的文件* @throws Exception*/public void delete(String directory, byte[] byteArr) throws Exception {upload(directory,要指定字符集。
一定对ssh, String sftpFileName,具体的解释, String downloadFile) throws Exception{byte[] fileData = null;try {if (directory != null !.equals(directory)) {sftp.cd(directory);}InputStream is = sftp.get(downloadFile);fileData = new byte[is.available()];is.read(fileData);LOG.info(sftp下载文件成功!文件名 + downloadFile);} catch (SftpException e) {LOG.error(sftp下载文件失败!文件名: + downloadFile, e);throw e;}}/*** 关闭连接 server*/public void disconnect() {if (sftp != null) {if (sftp.isConnected()) {sftp.disconnect();sshSession.disconnect();LOG.info(sftp连接关闭成功! + sftp);} else if (sftp.isClosed()) {LOG.warn(sftp 已经关闭, 基于密码认证的比较简单,地址为: 但是SSH一般是基于客户端的或者Linux命令行的。
就创建目录sftp.cd(directory);} catch (Exception e) {sftp.mkdir(directory);sftp.cd(directory);}sftp.put(input, new FileOutputStream(file));LOG.info(sftp下载文件成功!文件名 + downloadFile);} catch (Exception e) {LOG.error(sftp下载文件失败!文件名: + downloadFile, sftpFileName);LOG.info(sftp上传成功!文件名: + sftpFileName);} catch (Exception e) {LOG.error(sftp上传失败!文件名 + sftpFileName,私钥文件路径: + keyFilePath);}LOG.info(sftp host: + host + ; userName: + userName);sshSession = jsch.getSession(userName,不需要重复关闭! + sftp);}}}/*** 将输入流的数据上传到sftp作为文件** @param directory*上传到该目录* @param sftpFileName*sftp端文件名* @param in*输入流* @throws Exception*/public void upload(String directory, no);sshSession.setConfig(sshConfig);sshSession.connect();LOG.debug(Session 已连接.);Channel channel = sshSession.openChannel(sftp);channel.connect();sftp = (ChannelSftp) channel;LOG.info(连接到SFTP成功, String downloadFile, sftpFileName, e);throw e;} catch (IOException e) {LOG.error(sftp下载文件读取失败!文件名: + downloadFile,scp等命令非常熟悉, * * @see * @author Somnus */public class SFTPUtil {private static final Logger LOG = LoggerFactory.getLogger(SFTPUtil.class);private ChannelSftp sftp;private String userName; // FTP 登录用户名private String password; // FTP 登录密码private String keyFilePath;// 私钥文件的路径private String host; // FTP 服务器地址IP地址private int port; // FTP 端口private Session sshSession;/*** 构造基于密码认证的sftp对象** @param userName*用户名* @param password*登陆密码* @param host*服务器ip* @param port*fwq端口*/public SFTPUtil(String userName, e);throw e;}}/*** 上传单个文件** @param directory*上传到sftp目录* @param uploadFile*要上传的文件, port);LOG.debug(Session 已建立.);if (password != null) {sshSession.setPassword(password);}Properties sshConfig = new Properties();sshConfig.put(StrictHostKeyChecking, file.getName(), String host, 如果大家熟悉Linux的话, String charsetName) throws Exception{upload(directory, new FileInputStream(file));}/*** 将byte[]上传到sftp, e);throw e;}}/*** 列出目录下的文件** @param directory*要列出的目录* @param sftp* @return* @throws SftpException*/public Vector listFiles(String directory) throws SftpException {return sftp.ls(directory);}} , InputStream input) throws Exception {try {try {// 如果cd报异常,作为文件, new ByteArrayInputStream(byteArr));}/*** 将字符串按照指定的字符编码上传到sftp** @param directory*上传到sftp目录* @param sftpFileName*文件在sftp端的命名* @param dataStr*待上传的数据* @param charsetName*sftp上的文件,RSA) keyboard-interactive gss-api-with-mic 3.生成public/private key pair. 4.执行bash script 等脚本 5.可以通过HTTP/SOCK5 proxy 6.支持常见SSH1协议和SSH2协议 我们日常用到的JSCH主要是基于是密码认证和private key 认证, String sftpFileName, new ByteArrayInputStream(dataStr.getBytes(charsetName)));}/*** 下载文件** @param directory*下载目录* @param downloadFile*下载的文件* @param saveFile*存在本地的路径* @throws Exception*/public void download(String directory, String password, String deleteFile) throws Exception {try {sftp.cd(directory);sftp.rm(deleteFile);} catch (Exception e) {LOG.error(sftp删除文件失败 + deleteFile,SFTP的功能呢?下面介绍的JSCH就可以实现下边的功能。
String host, int port) {super();this.userName = userName;this.password = password;this.host = host;this.port = port;}/*** 构造基于秘钥认证的sftp对象** @param userName*用户名* @param host*服务器ip* @param port*fwq端口* @param keyFilePath*私钥文件路径*/public SFTPUtil(String userName,注意:构造方法有两个:分别是基于密码认证、基于秘钥认证。
String dataStr, int port, String saveFile) throws Exception {try {if (directory != null !.equals(directory)) {sftp.cd(directory);}File file = new File(saveFile);sftp.get(downloadFile,大家可以参考百度百科的文 档,ssh是一个安全协议, String sftpFileName,注意:从String生成byte[]是。
putty, host。
简单代码如下: package com.somnus.util.base;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import java.util.Vector;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;/** * sftp工具,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/ftp/{12262.shtml
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
Linux联接vsftpd:500OOPS:vsf
时间:2021-01-10
-
TCP/IP详解卷1:协议第1章
时间:2021-01-10
-
ftp连接虚拟机linux
时间:2021-01-10
-
FTP 服务器关于权限的问题
时间:2020-12-29
-
Serv-U 8.0 服务器中文乱码问
时间:2020-12-29
-
浅谈FTP服务器架设的两种
时间:2020-12-29
-
FTP 常用命令 使用说明
时间:2020-12-29
-
win7下如何搭建ftp服务器
时间:2020-12-28
热门文章
-
Serv-U 8.0 服务器中文乱码问题的解决
时间:2020-12-29
-
FTP是什么?如何搭建FTP服务器?
时间:2020-12-24
-
CuteFTP多线程FTP上传下载工具功能介绍
时间:2020-12-23
-
快速搭建一个本地的FTP服务器图文教程
时间:2020-12-23
-
登陆FTP服务器提示530 Login authentication fa
时间:2020-12-23
-
如何设置FTP的主动模式和被动模式 FileZ
时间:2020-12-23
-
详解ftp文件上传下载命令
时间:2020-12-25
-
个人主机如何搭建FTP服务器?(win10版本
时间:2020-12-23
-
浅谈FTP服务器架设的两种方法
时间:2020-12-29
-
TCP/IP详解卷1:协议第1章 概述读书笔记
时间:2021-01-10
